package org.haredot.factory;

/**
 *  管理 @Component, @Service, @Controller, @Repository 注解 修改的 类的 对象
 */
public interface BeanFactory {
    /**
     * 根据 注解中对应 value 值 获取 容器中对应的 对象
     * @param beanId
     * @return
     */
    public Object getBean(String beanId) throws Exception ;


    public <T> T getBean(String beanId, Class<T> clazz) throws Exception ;

    /**
     * 根据 bean 的类型 获取对应的对象， 如果容器中该类型 有多个对象，则抛出异常
     * @param clazz
     * @param <T>
     * @return
     * @throws Exception
     */
    public <T> T getBean(Class<T> clazz) throws Exception ;
}
